The invention relates to a method and mechanism for managing data when upgrading software in a distributed computing system.
Over time, many types of software applications will undergo some sort of change. These changes may occur for a variety of reasons. For example, given the complexity of modern software applications, it is well known that most software contains coding errors or “bugs” that will need correction. One reason to upgrade from an earlier version to a later version of a software application is to correct errors or bugs that may exist in the earlier version. Another reason for changing a software application is to introduce improvements to the operation or functionality of the software application. Yet another reason is to change a software application is to meet new requirements or to adapt to changes in its environment, e.g., new hardware.
A “rolling upgrade” refers to the process of performing software upgrades to a live existing software installation in a distributed environment in which the instances, nodes, or entities of the distributed system (referred to herein as “members”) are upgraded in a staggered manner. This form of upgrade ensures availability of the application during software upgrades, and thus minimizes or eliminates planned downtime while contributing to high availability goals. As used herein, the term member may encompass either a single instance/node/entity or a collection of such instances/nodes/entities. One example approach for performing a rolling upgrade is described in co-pending U.S. application Ser. No. 10/803,623, entitled “METHOD AND MECHANISM FOR PERFORMING A ROLLING UPGRADE OF COMPUTER SOFTWARE”, filed on Mar. 17, 2004, which is hereby incorporated by reference in its entirety.
At each member, there are numerous ways to upgrade a software application from an earlier version to a later version. A common approach is for a software developer to create patches and patch sets that are applied to a copy of the software binary or executable. Another common approach is to create a new object having the same location reference. Tools are often provided to perform the software upgrades or installations.
Performing an upgrade or change to an existing software application typically requires a shutdown of either/both the member or software enterprise. For example the upgrade can be performed by shutting down the software, implementing the upgrade, and then bringing the member back up so that availability is restored.
With modern software, it can be anticipated that software developers will provide upgrades and changes on an ongoing basis. In fact, many IT (“information technology”) departments will periodically schedule planned events to perform upgrades to their software installations. These events could result in significant planned downtimes. It is desirable to limit the effects of these downtimes as much as possible since they could affect the availability of mission critical systems, potentially resulting in productivity and financial losses for organizations.
When a software application is upgraded to a new version, it is possible that data associated with, operated upon, or dependent from the new software versions will also change. This could include changes to the content, format, or organizational structures of the data. For example, when a database application changes from an old version to a new version, it is quite likely that configuration metadata for the database system or the data content will be different between the two versions of the software. In many cases, the data for the old version of the software is different enough from the data for the new version of the software such that they are incompatible between the different versions of the software.
Many distributed systems operate with data that is shared between multiple members. Both data content and data metadata may be shared by members in a distributed system. For example, a distributed order processing system is a database system in which multiple members access and operate upon a shared central ordering database. Regardless of the version/type of software being used, the members in this type of system would access the shared database.
If members in the distributed system operate upon shared data, then concurrently running different versions of the same software in a distributed system could present a problem if expected data for the different versions of the software are incompatible. The problem occurs when a rolling upgrade is being performed and different members within the distributed system are concurrently operating different versions of a software application that only work with different versions of the shared data. Thus, a first member running a first version of a software may expect a particular data element to be in a first storage configuration or in a first data format. A second member running a second version of the software may expect that same data element to be in another storage configuration and/or in another data format. If these two storage configurations or data formats are incompatible with each other, then since the data element is being shared between the two members, this causes an incompatibility that can interfere with the functioning of the software application during the rolling upgrade.
Embodiments of the present invention provides a method and mechanism for managing data to resolve incompatibilities between different versions of data during an upgrade. The technique works for both shared and non-shared data. In addition, the present approach is tolerant of changes that occur over time and over many different versions, and thus can be useful over an indefinite time period. According to one embodiment of the invention, incompatibilities to member private data in a global namespace is managed using group/member dependent keys, static shared data is managed using group/member dependent keys/links, and dynamic shared data is managed using data transformation functions. Further details of aspects, objects, and advantages of the invention are described below in the detailed description, drawings, and claims.